package com.zb.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zb.entity.SelectVo;
import com.zb.entity.UserInfo;
import com.zb.entity.ZjUserContact;
import com.zb.vo.UserContactSelectVo;
import com.zb.vo.UserContactVo;
import com.zb.vo.UserVo;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 用户联系人表 服务类
 * </p>
 *
 * @author WEN
 * @since 2023-08-08
 */
public interface ZjUserContactService extends IService<ZjUserContact> {
    /**
     * 保存主联系人
     * @param custAccId 商家ID
     * @param userId 用户ID
     * @param userVo
     */
    void saveMainContact(Long custAccId, Long userId, UserVo userVo);

    /**
     * 保存主联系人
     * @param custAccId 商家ID
     * @param userId 用户ID
     * @param userInfo 用户地址信息
     */
    void saveMainContact(Long custAccId, Long userId, UserInfo userInfo);

    /**
     * 新增或修改联系人
     * @param custAccId 商家ID
     * @param userId 用户ID
     * @param contactVo 联系人对象
     */
    void save(Long custAccId, Long userId, UserContactVo contactVo);



    /**
     * 获取用户联系人
     * @param userId 用户ID
     * @param selectVo 联系人搜索条件
     * @return
     */
    Map<String, Object> getUserContact(Long userId, UserContactSelectVo selectVo);

    /**
     * 更改主要联系人
     * @param userId 用户ID
     * @param id 联系人ID
     */
    void updateMainContact(Long userId, Long id);

    /**
     * 批量删除联系人
     * @param idList 联系人ID集合
     */
    void deleteBatchByids(List<Long> idList);

    /**
     * 根据用户ID批量删除联系人
     * @param userIdList 用户ID集合
     */
    void deleteBatchByUserIds(List<Long> userIdList);

    /**
     * 分页获取用户联系人下拉数据列表
     * @param userId 用户ID
     * @param selectVo 搜索条件
     * @return
     */
    Map<String, Object> pageContactSelect(Long userId, SelectVo selectVo);

    /**
     * 根据用户ID获取主要联系人
     * @param userId 用户ID
     * @return
     */
    ZjUserContact getMainContactByUserId(Long userId);

    /**
     * 根据用户ID查询主联系人信息
     * @param userIds 用户ID集合
     * @return
     */
    List<ZjUserContact> getMainContactByUserIds(List<Long> userIds);

    /**
     * 根据手机号查询联系人是否存在
     * @param userId 客户ID
     * @param id 联系人ID
     * @param phone 手机事情
     * @return
     */
    Integer existByPhone(Long userId, Long id, String phone);

    /**
     * 删除联系人地址
     * @param id 联系人ID
     */
    void deleteUserContactAddress(Long id);

    /**
     * 分页获取客户下拉数据，带出所有联系人及对应的账号
     * @param custAccId 商家ID
     * @param selectVo 搜索条件
     * @return
     */
    Map<String, Object> pageUserSelect(Long custAccId, SelectVo selectVo);
}
